package ScalaStudy.chapter06

object test09_AbstractClass {
  def main(args: Array[String]): Unit = {


    /////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////   抽象类定义 //////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////

    //抽象类必须得有子类赋值

    val student9 = new Student9
    student9.sleep()
    student9.eat()

  }
}


//抽象类定义
abstract class Persion9{
  //非抽象属性
  val name:String = "wq"

  //抽象属性
  var age: Int

  //非抽象方法
  def eat():Unit = {
    println("开始吃")
  }

  //抽象方法
  def sleep():Unit
}


//具体的实现子类

class Student9 extends Persion9{              //因为父类为抽象类，所以子类也必须为父类中的抽象属性和方法赋值
  //实现抽象属性和方法

  var age: Int = 18
  def sleep(): Unit = {
    println("学生开始睡")
  }

  //重写父类非抽象的属性和方法
  override val name: String = "海泥"          //重写要val才行

  override def eat(): Unit = {
    super.eat()                                //调用父类中的方法
    println("学生开始吃")
  }

}


